package com.doubao.user.service;

import com.doubao.common.result.Result;
import com.doubao.user.dto.MembershipOrderDTO;

/**
 * 会员订阅服务接口
 */
public interface MembershipSubscriptionService {

    /**
     * 创建会员订阅订单
     *
     * @param userId 用户ID
     * @param levelId 会员等级ID
     * @param subscriptionType 订阅类型
     * @param clientIp 客户端IP
     * @return 订单信息
     */
    Result<MembershipOrderDTO> createSubscriptionOrder(Long userId, Integer levelId,
                                                       String subscriptionType, String clientIp);

    /**
     * 处理会员订阅支付成功
     *
     * @param orderId 订单ID
     * @return 处理结果
     */
    Result<Void> handleSubscriptionPaySuccess(String orderId);

    /**
     * 处理会员订阅支付失败
     *
     * @param orderId 订单ID
     * @param reason 失败原因
     * @return 处理结果
     */
    Result<Void> handleSubscriptionPayFailed(String orderId, String reason);

    /**
     * 获取订阅订单详情
     *
     * @param orderId 订单ID
     * @return 订单信息
     */
    Result<MembershipOrderDTO> getSubscriptionOrder(String orderId);

    /**
     * 取消会员订阅
     *
     * @param userId 用户ID
     * @return 处理结果
     */
    Result<Void> cancelSubscription(Long userId);

    /**
     * 续订会员
     *
     * @param userId 用户ID
     * @param subscriptionType 订阅类型
     * @param clientIp 客户端IP
     * @return 订单信息
     */
    Result<MembershipOrderDTO> renewSubscription(Long userId, String subscriptionType, String clientIp);
}